package cn.hill4j.tool.spring.ext.iop.dynamic;

import cn.hill4j.tool.spring.ext.iop.AutoFieldClientDefiner;
import cn.hill4j.tool.spring.ext.iop.IopClientsDefiner;

import java.lang.annotation.*;
/**
  * ClassName: DynamicIop
  * Description: 动态iopClient定义配置注解
  * @author hillchen
  * Date: 2023/8/11
  * @version: 1.0
  */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DynamicIop {
    /**
     * @author hillchen
     * Description:  动态iopClient构造器
     * Date: 2023/8/11 00:43
     * @return Class
     **/
    Class<? extends DymIopClientsBuilder> clientBuilder();
    /**
     * @author hillchen
     * Description:  动态iopClient bean定义信息处理类
     * Date: 2023/8/11 00:43
     * @return Class
     **/
    Class<? extends IopClientsDefiner> definer() default AutoFieldClientDefiner.class;
    /**
     * @author hillchen
     * Description: 动态iopClient定义配置类
     * Date: 2023/8/11 00:43
     * @return Class
     **/
    Class<? extends Annotation> configAnnotation() default DynamicIop.class ;
    /**
     * @author hillchen
     * Description:  动态健值获取器
     * Date: 2023/8/11 00:43
     * @return Class
     **/
    Class<? extends DymKeySelector> selectorClass() ;
    /**
     * @author hillchen
     * Description:  外部配置类
     * Date: 2023/8/11 00:43
     * @return Class
     **/
    Class<?>[] configuration() default {};

}
